/**
 * 3. 无重复字符的最长子串
 * @param s 字符串
 * @returns Number
 */
function lengthOfLongestSubstring(s: string): number {
  let left = 0
  let res = 0
  const map = new Map()
  for (let right = 0; right < s.length; right++) {
    if (map.has(s[right]) && map.get(s[right]) >= left) {
      left = map.get(s[right]) + 1
    }
    res = Math.max(res, right - left + 1)
    map.set(s[right], right)
  }
  return res
}
